package com.joyintech.vo.fcPosInq;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;

import javax.validation.constraints.NotBlank;


@JsonIgnoreProperties(ignoreUnknown = true)
public class Request {

    /**
     * 任务ID
     */
    @NotBlank(message = "任务ID不能为空")
    private String taskId;

    /**
     * 功能码
     */
    @JacksonXmlProperty(localName = "funcid")
    private String funcId;

    /**
     * 交易码 跟功能码一致
     */
    @JacksonXmlProperty(localName = "trans_code")
    private String transCode;

    /**
     * 渠道交易日期 YYYYMMDD
     */
    @JacksonXmlProperty(localName = "channelDate")
    private String channelDate;

    /**
     * 渠道交易时间 HHMMSS
     */
    @JacksonXmlProperty(localName = "channel_time")
    private String channelTime;


    /**
     * 渠道流水号
     */
    @JacksonXmlProperty(localName = "channel_sno")
    private String channelSno;

    /**
     * 交易渠道号   D10
     */
    @JacksonXmlProperty(localName = "acceptmethod")
    private String acceptMethod;

    /**
     * 发起渠道号 默认与交易渠道号相同
     */
    @JacksonXmlProperty(localName = "Acceptmethod_ex")
    private String acceptMethodEx;

    /**
     * 交易发生网点
     */
    @JacksonXmlProperty(localName = "sub_brch_code")
    private String subBrchCode;


    /**
     * 服务系统代码		2	Y	业务系统标志    传20
     * 60 资产管理
     * 26 结构性存款
     * 20理财模块交易类交易
     * 90 理财模块查询类交易
     * 22 理财代销交易类交易
     * 93 理财代销查询类交易
     * 10公共模块
     */
    @JacksonXmlProperty(localName = "sysflag")
    private String sysFlag;


    /**
     * 银行结算账号/卡号/折号   按卡号查询时必须输入
     */
    @JacksonXmlProperty(localName = "deposit_acct")
    private String depositAcct;

    /**
     * 客户类型  D2   按证件查询时必须输入
     */
    @JacksonXmlProperty(localName = "cust_type")
    private String custType;

    /**
     * 证件类型  D4   按证件查询时必须输入
     */
    @JacksonXmlProperty(localName = "id_type")
    private String idType;

    /**
     * 证件号码  D4   按证件查询时必须输入
     */
    @JacksonXmlProperty(localName = "id_code")
    private String idCode;

    /**
     *     产品状态		1A	N	N	1预约认购期
     * 2认购期
     * 3封闭期
     * 4发行失败
     * 5开放期
     * 6产品终止（清盘）
     *             7停止赎回
     * 8停止申购
     * 9停止申购赎回
     */
    @JacksonXmlProperty(localName = "prod_status")
    private String prodStatus;

    /**
     *     查询标识		 1按卡号查询
     * 2按核心客户号查询
     * 3按证件号查询
     *     默认：根据证件查询
     */
    @JacksonXmlProperty(localName = "query_flag")
    private String queryFlag;

    /**
     *     核心客户号 query_flag为2，按核心客户号查询时，必须输入
     */
    @JacksonXmlProperty(localName = "bank_cust_code")
    private String bankCustCode;

    /**
     * 当前页
     */
    @JacksonXmlProperty(localName = "pageNum")
    private String pageNum;

    /**
     * 每页记录数
     */
    @JacksonXmlProperty(localName = "pageLength")
    private String pageLength;

    public String getTaskId() {
        return taskId;
    }

    public void setTaskId(String taskId) {
        this.taskId = taskId;
    }

    public String getPageNum() {
        return pageNum;
    }

    public void setPageNum(String pageNum) {
        this.pageNum = pageNum;
    }

    public String getPageLength() {
        return pageLength;
    }

    public void setPageLength(String pageLength) {
        this.pageLength = pageLength;
    }

    public String getFuncId() {
        return funcId;
    }

    public void setFuncId(String funcId) {
        this.funcId = funcId;
    }

    public String getTransCode() {
        return transCode;
    }

    public void setTransCode(String transCode) {
        this.transCode = transCode;
    }

    public String getChannelDate() {
        return channelDate;
    }

    public void setChannelDate(String channelDate) {
        this.channelDate = channelDate;
    }

    public String getChannelTime() {
        return channelTime;
    }

    public void setChannelTime(String channelTime) {
        this.channelTime = channelTime;
    }

    public String getChannelSno() {
        return channelSno;
    }

    public void setChannelSno(String channelSno) {
        this.channelSno = channelSno;
    }

    public String getAcceptMethod() {
        return acceptMethod;
    }

    public void setAcceptMethod(String acceptMethod) {
        this.acceptMethod = acceptMethod;
    }

    public String getAcceptMethodEx() {
        return acceptMethodEx;
    }

    public void setAcceptMethodEx(String acceptMethodEx) {
        this.acceptMethodEx = acceptMethodEx;
    }

    public String getSubBrchCode() {
        return subBrchCode;
    }

    public void setSubBrchCode(String subBrchCode) {
        this.subBrchCode = subBrchCode;
    }

    public String getSysFlag() {
        return sysFlag;
    }

    public void setSysFlag(String sysFlag) {
        this.sysFlag = sysFlag;
    }

    public String getDepositAcct() {
        return depositAcct;
    }

    public void setDepositAcct(String depositAcct) {
        this.depositAcct = depositAcct;
    }

    public String getCustType() {
        return custType;
    }

    public void setCustType(String custType) {
        this.custType = custType;
    }

    public String getIdType() {
        return idType;
    }

    public void setIdType(String idType) {
        this.idType = idType;
    }

    public String getIdCode() {
        return idCode;
    }

    public void setIdCode(String idCode) {
        this.idCode = idCode;
    }

    public String getProdStatus() {
        return prodStatus;
    }

    public void setProdStatus(String prodStatus) {
        this.prodStatus = prodStatus;
    }

    public String getQueryFlag() {
        return queryFlag;
    }

    public void setQueryFlag(String queryFlag) {
        this.queryFlag = queryFlag;
    }

    public String getBankCustCode() {
        return bankCustCode;
    }

    public void setBankCustCode(String bankCustCode) {
        this.bankCustCode = bankCustCode;
    }
}
